﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="SlurpeeSchema"
    targetNamespace="http://tempuri.org/SlurpeeSchema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/SlurpeeSchema.xsd"
    xmlns:mstns="http://tempuri.org/SlurpeeSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="FileSlurper" type="FileSlurperType" />

  <xs:complexType name="FileSlurperType">
    <xs:all>
      <xs:element name="SearchPaths" type="StringList">
        <xs:annotation>
          <xs:documentation>
            Pattern used to locate the paths to look for files.
            Examples: 
                * - All paths
                *Documents - All folders that end with the word Documents
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FilePatternList" type="StringList">
        <xs:annotation>
          <xs:documentation>
            Pattern used to filter files.
            Examples:
              *.doc* - all .doc, .docx etc
              *.xls* - all .xls, .xlsx etc
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DestinationPath" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            Path to copy files to.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Recursive" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
            Search through children folders.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MaxThreads" type="xs:int">
        <xs:annotation>
          <xs:documentation>
            The maximum number of threads this instance will use.
            NOTE: This value is not used yet
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnumerateLocalFolders" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
            Look for files on the local machine.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnumerateNetworkShares" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
            Look for files on the network.
            This will search all machines on the local network.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnumerateSpecialShares" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
            Enumerate special shares along with disk shares.
            NOTE: This will drastically increase the time of the search
            because it will search things like C$ which is essentially
            the entire hard drive (if the logged in user has permissions).
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BatchSize" type="xs:int">
        <xs:annotation>
          <xs:documentation>
            The max number of files to enumerate at a time.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProbeHostBeforeEnumeration" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
            Check to see if the host is up before trying to enumerate files.
            This will make enumeration faster however it may miss machines.
            NOTE: This value is not used yet.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="StringList">
    <xs:sequence>
      <xs:element name="string" minOccurs="0" maxOccurs="unbounded">
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
</xs:schema>
